//package org.halk;
//
//import org.opencv.core.Core;
//import org.opencv.core.Mat;
//import org.opencv.core.Size;
//import org.opencv.imgcodecs.Imgcodecs;
//import org.opencv.imgproc.Imgproc;
//import org.opencv.videoio.VideoCapture;
//import org.opencv.videoio.VideoWriter;
//import org.opencv.videoio.Videoio;
//
//public class SaveVideoFromCamera {
//    static {
//        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//    }
//
//    public static void main(String[] args) {
//        VideoCapture camera = new VideoCapture(0); // 0代表默认摄像头
//        if (!camera.isOpened()) {
//            System.out.println("无法打开摄像头");
//            return;
//        }
//
//        int width = (int) camera.get(Videoio.CAP_PROP_FRAME_WIDTH);
//        int height = (int) camera.get(Videoio.CAP_PROP_FRAME_HEIGHT);
//
//        String videoFile = "output.avi";
//        int fourcc = VideoWriter.fourcc('M','J','P','G'); // 使用MJPG编码
//        double fps = 30.0; // 帧率
//
//        VideoWriter writer = new VideoWriter(videoFile, fourcc, fps, new Size(width, height), true);
//
//        Mat frame = new Mat();
//
//        while (true) {
//            if (camera.read(frame)) {
//                // 可以在这里对frame进行处理，例如显示或修改
//                Imgcodecs.imwrite("temp_frame.jpg", frame); // 仅作示例，保存每帧为图片，实际应用中可能不需要这步
//
//                // 写入视频文件
//                writer.write(frame);
//
//                // 显示帧（如果需要的话，通常在实际应用中不推荐这样做，因为会影响性能）
//                // Imgproc.cvtColor(frame, frame, Imgproc.COLOR_BGR2RGB);
//                // HighGui.imshow("Frame", frame);
//
//                if (Core.waitKey(1) == 27 || !camera.isOpened()) { // 按ESC键退出或摄像头关闭
//                    break;
//                }
//            } else {
//                System.out.println("无法捕获帧");
//                break;
//            }
//        }
//
//        // 释放资源
//        camera.release();
//        writer.release();
//        Core.destroyAllWindows();
//    }
//}
